
//Copyright 1997-2009 Syrinx Development, Inc.
//This file is part of the Syrinx Web Application Framework (SWAF).
// == BEGIN LICENSE ==
//
// Licensed under the terms of any of the following licenses at your
// choice:
//
//  - GNU General Public License Version 3 or later (the "GPL")
//    http://www.gnu.org/licenses/gpl.html
//
//  - GNU Lesser General Public License Version 3 or later (the "LGPL")
//    http://www.gnu.org/licenses/lgpl.html
//
//  - Mozilla Public License Version 1.1 or later (the "MPL")
//    http://www.mozilla.org/MPL/MPL-1.1.html
//
// == END LICENSE ==
using System;
using System.Collections;
using Swaf.Container;

namespace Swaf.Logging
{
    /// <summary>
    /// Summary description for ILog.
    /// </summary>
    public interface ILog : ISubject
    {
        void write(string info, params object[] changes);
        void write(INameAddressSupport info);
        void println(string info);
        void println(INameAddressSupport info);
        void println(int level, string info);
        void println(LoggingLevels level, string info);

        void println(string info, params object[] changes);
        void println(int level, string info, params object[] changes);
        void println(int level, INameAddressSupport info);
        void println(LoggingLevels level, string info, params object[] changes);
        void println(LoggingLevels level, INameAddressSupport info);

        bool LogCaller {get;set;}
        int NotifyThreshold {get;set;}
        int DefaultLevel {get;set;}
        IList Observers {get;}
    }
    public enum LoggingLevels
    {
        Critical=1000,
        High=100,
        Medium=10,
        Low=1        
    };
}
